package com.eight.controller.api;

import com.eight.pojo.SysRole;
import com.eight.service.RoleService;
import com.eight.vo.ComResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;
import java.util.concurrent.locks.ReadWriteLock;

@RestController
@RequestMapping("system/api/role")
public class RoleApi {
    /**
     * 注入 role 业务层
     */
    @Resource(name = "roleService")
    private RoleService roleService;

    /**
     * 无条件查询所有角色
     * @return 返回所有角色
     */
    @PostMapping("selectList")
    public ComResult selectList() {
        return new ComResult(2000,"查询角色",roleService.selectList());
    }

    /**
     * 根据 id 删除角色
     * @param id id
     * @return 返回删除结果
     */
    @PostMapping("deleteById/{id}")
    public ComResult deleteById(@PathVariable("id") int id) {
        return new ComResult(2000,"删除角色",roleService.deleteById(id));
    }

    /**
     * 根据 id 修改角色权限
     * @param roleId 角色id
     * @param menuIds 权限
     * @return 返回修改结果
     */
    @PostMapping("updateRoleMenuById")
    public ComResult updateRoleMenuById( int roleId,@RequestParam(defaultValue = "0") int[] menuIds) {
        return new ComResult(2000,"更新角色菜单",roleService.updateRoleMenuById(roleId,menuIds));
    }

    /**
     * 添加新的角色
     * @param roleApi 新角色的信息
     * @return 返回添加结果
     */
    @PostMapping("addRole")
    public ComResult addRole(@RequestBody SysRole roleApi) {
        return new ComResult(2000,"添加角色",roleService.addRole(roleApi));
    }

    /**
     * 根据角色id修改角色的信息
     * @param roleApi 修改的角色的信息
     * @return 返回修改的结果
     */
    @PostMapping("updateRole")
    public ComResult updateRole(@RequestBody SysRole roleApi) {
        return new ComResult(2000,"更新角色",roleService.updateRole(roleApi));
    }

}
